package Study;

import java.io.IOException;
import java.util.Scanner;

/**
 * 二分查找
 * 网页
 * 从输入排序到查找
 *
 */

public class Demo5 {
    public static void main(String[] args) throws IOException {
        try
        {
            System.out.println("请输入数组:");
            Scanner input=new Scanner (System.in);
            String x=input.nextLine();
            String[] y=x.split(",| ");//去除输入中的空格和逗号
            int array[]=new int[y.length];
            for(int i=0;i<y.length;i++)
            {
                array[i]=Integer.parseInt(y[i]);
            }//获取输入的数组
            System.out.print("请输入查找的数：");
            Scanner search=new Scanner(System.in);
            int Search=search.nextInt();
            int []arrayASort=ArrayASort(array);//调用冒泡排序函数获取排序后的数组
            int index=ArrayIndex(arrayASort,Search);//获取寻找到的下标
            for(int a:arrayASort)
            {
                System.out.print(a+" ");//输出排序后的数组
            }
            System.out.print("\n你要查找的数在第"+(index+1)+"个");
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

    }
    public static int[] ArrayASort(int[] array)//对数组进行升序排序
    {
        //冒泡排序
        for(int i=0;i<array.length;i++)
        {
            for(int k=i;k<array.length;k++)
            {
                if(array[i]>array[k])
                {
                    int x=array[i];
                    array[i]=array[k];
                    array[k]=x;
                }
            }
        }

        return array;
    }
    public static int ArrayIndex(int []array,int n)//n为需要查找的数据
    {
        int beginIndex=0;//起始位置
        int endIndex=array.length-1;//结束位置
        int midIndex=(beginIndex+endIndex)/2;//中间位置
        //做一个死循环来循环列表;
        while(true)
        {
            if(n<array[midIndex])
            {
                endIndex=midIndex-1;
            }
            else if(n==array[midIndex])
            {
                return midIndex;//找到该数据
            }
            else if(n>array[midIndex])
            {
                beginIndex=midIndex+1;
            }
            midIndex=(beginIndex+endIndex)/2;
//            if(beginIndex>endIndex)//没有找到该数据
//            {
//                return -1;
//            }
        }
    }
}
